package com.itheima.listener;

import com.itheima.service.FlowService;
import com.itheima.utils.SpringContextUtil;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
import org.springframework.stereotype.Component;

/**
 * activiti事件监听器
 *
 * 异步执行
 *
 * 启动流程实例时指定负责人，会触发assignment事件，回调notify方法
 * 一个人完成某个任务后，转到下一个人时，也会触发此方法
 */
@Slf4j
@Component
public class MyTaskListener implements TaskListener {

    @Override
    public void notify(DelegateTask delegateTask) {
        log.info("====> eventName={}", delegateTask.getEventName());
        if (delegateTask.getEventName().equals("assignment")) {
            FlowService flowService = (FlowService) SpringContextUtil.getBean("flowService");
            log.info("====> flowService={}", flowService);
            flowService.createTaskEvent(delegateTask);
        }
    }
}
